home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Franz PD
/
Franz PD Disk #097 (1990-10)(Amiga User Group Deutschland e.V.).zip
/
Franz PD Disk #097 (1990-10)(Amiga User Group Deutschland e.V.).adf
/
Moire
/
Moire.MOD
< prev
next >
Wrap
Text File
|
1990-09-11
|
3KB
|
119 lines
(* Moire - wurde im Jahre 1990 von Marcus Schießer geschrieben
Moire ist Freeware. Das Kopierrecht liegt allein beim Autor
Das Programm zeichnet ein sogenanntes Moire-Gitter. *)
MODULE Moire;
FROM Arts IMPORT
Assert,TermProcedure;
FROM Exec IMPORT
SetSignal;
FROM SYSTEM IMPORT
ADR,ADDRESS,LONGSET,INLINE,SETREG;
FROM Graphics IMPORT
RastPortPtr,jam1,Move,Draw,SetAPen,SetDrMd,
ViewModes,ViewModeSet,LoadRGB4,ViewPortPtr;
FROM Intuition IMPORT
customScreen,IDCMPFlags,IDCMPFlagSet,NewScreen,NewWindow,
ScreenFlags,ScreenFlagSet,ScreenPtr,WindowFlags,WindowFlagSet,
WindowPtr,CloseScreen,CloseWindow,OpenScreen,OpenWindow,ShowTitle;
FROM RandomNumber IMPORT
RND;
FROM Dos IMPORT
Delay;
CONST
Height= 256;
Width= 640;
VAR
MyScreen: ScreenPtr;
MyWindow: WindowPtr;
MyRP: RastPortPtr;
LoopNumber,XNumber,YNumber: CARDINAL;
PROCEDURE Cleanup;
BEGIN
IF MyWindow#NIL THEN
CloseWindow(MyWindow);
END;
IF MyScreen#NIL THEN
CloseScreen(MyScreen);
END;
END Cleanup;
PROCEDURE DrawLine(x1,y1,x2,y2,color: INTEGER);
BEGIN
SetAPen(MyRP,color);
SetDrMd(MyRP,jam1);
Move(MyRP,x1,y1);
Draw(MyRP,x2,y2);
END DrawLine;
PROCEDURE colors; (*$E-*)
BEGIN
INLINE(0000H,0FFFH);
END colors;
PROCEDURE CreateScreen(w,h,d: INTEGER; t: ADDRESS): ScreenPtr;
VAR
ns: NewScreen;
BEGIN
WITH ns DO
leftEdge:=0;topEdge:=0;width:=w;height:=h;depth:=d;
detailPen:=0;blockPen:=1;
viewModes:=ViewModeSet{hires};
type:=customScreen;
font:=NIL;
defaultTitle:=t;
gadgets:=NIL;
customBitMap:=NIL;
END;
RETURN OpenScreen(ns);
END CreateScreen;
PROCEDURE CreateWindow(x,y,w,h: INTEGER; if: IDCMPFlagSet; wf: WindowFlagSet;
g,s,t: ADDRESS): WindowPtr;
VAR
nw: NewWindow;
BEGIN
WITH nw DO
leftEdge:=x;topEdge:=y;width:=w;height:=h;detailPen:=0;blockPen:=1;
idcmpFlags:=if;flags:=wf;firstGadget:=g;checkMark:=NIL;
title:=t;screen:=s;bitMap:=NIL;minWidth:=w;minHeight:=h;
maxWidth:=w;maxHeight:=h;type:=customScreen;
END;
RETURN OpenWindow(nw);
END CreateWindow;
BEGIN
MyWindow:=NIL; MyScreen:=NIL;
TermProcedure(Cleanup);
MyScreen:=CreateScreen(640,256,1,NIL);
Assert(MyScreen#NIL,ADR("Cannot open the screen"));
SETREG(0,0);
ShowTitle(MyScreen,FALSE);
MyWindow:=CreateWindow(0,0,640,256,
IDCMPFlagSet{mouseButtons},
WindowFlagSet{borderless,backDrop,activate},
NIL,MyScreen,NIL);
Assert(MyWindow#NIL,ADR("Cannot open the window"));
MyRP:=MyWindow^.rPort;
LoadRGB4(ADR(MyScreen^.viewPort),ADR(colors),4);
WHILE NOT (MyWindow^.userPort^.sigBit IN SetSignal(LONGSET{},LONGSET{})) DO
XNumber:=1+RND(Width);
YNumber:=1+RND(Height);
FOR LoopNumber := 1 TO Height DO
DrawLine(XNumber,YNumber,1,LoopNumber,(LoopNumber MOD 2)+1);
DrawLine(XNumber,YNumber,Width,LoopNumber,(LoopNumber MOD 2)+1);
END;
FOR LoopNumber := 1 TO Width DO
DrawLine(XNumber,YNumber,LoopNumber,1,(LoopNumber MOD 2)+1);
DrawLine(XNumber,YNumber,LoopNumber,Height,(LoopNumber MOD 2)+1);
END;
Delay(100);
END;
END Moire.